package fei.zhou.lambdalearn.demo6;

import java.util.ArrayList;
import java.util.stream.Stream;

public class Demo9 {
    
    public static void main(String[] args) {
        // 现在有两个ArrayList集合，分别存储6名男演员名称和6名女演员名称，要求完成如下的操作：
        // 1:男演员只要名字为3个字的前三人
        // 2:女演员只要姓林的，并且不要第一个
        // 3:把过滤后的男演员姓名和女演员姓名合并到一起
        // 4:把上一步操作后的元素作为构造方法的参数创建User对象,遍历数据
        // 创建集合
        ArrayList<String> manList = new ArrayList<String>();
        manList.add("周润发");
        manList.add("成龙");
        manList.add("刘德华");
        manList.add("吴京");
        manList.add("周星驰");
        manList.add("李连杰");
        
        ArrayList<String> womanList = new ArrayList<String>();
        womanList.add("林心如");
        womanList.add("张曼玉");
        womanList.add("林青霞");
        womanList.add("柳岩");
        womanList.add("林志玲");
        womanList.add("王祖贤");
        
        // 1:男演员只要名字为3个字的前三人
        Stream<String> stream1 = manList.stream().filter(s1 -> s1.length() == 3);
        
        // 2:女演员只要姓林的，并且不要第一个
        Stream<String> stream2 = womanList.stream().filter(s1 -> s1.startsWith("林")).skip(1);
        // 3:把过滤后的男演员姓名和女演员姓名合并到一起
        Stream<String> concatStream = Stream.concat(stream1, stream2);
        // 4:把上一步操作后的元素作为构造方法的参数创建User对象,遍历数据
        concatStream.map(User::new).forEach(System.out::println);
        
    }
    
    /*
     * 演员类
     */
    public static class User {
        private String name;
        
        public User(String name) {
            this.name = name;
        }
        
        public String getName() {
            return name;
        }
        
        public void setName(String name) {
            this.name = name;
        }
        
        @Override
        public String toString() {
            return "User{" + "name='" + name + '\'' + '}';
        }
    }
    
}